An operating system currently detects the exhaustion of resources when an allocation request is received i.e., it will fail the request when the resource is exhausted and attempts to return a corresponding error code to the requestor. In some cases, an event is also logged for future analysis. The operating system does not resolve the exhaustion situation on its own. Instead, the onus of handling this condition is left to the process or component that made this request. Using the Windows™ operating system as an example, when the commit charge is near the current commit limit and a request is made to allocate committed memory, if the request will push the commit charge beyond the current commit limit, the operating system increases the current limit. This process continues until the commit limit reaches the maximum value which is a factor of the size of physical memory and the maximum size of all the paging files. At this point, the commit limit is said to be exhausted and all requests for allocating memory will fail. Hence, critical system processes or services, or other components may crash, leading to loss of control and data.